Программирование сетевых приложений
Иерархия пользовательских исключений
class ApplicationException : public std::exception {
protected:
std::string message_;
int errorCode_;
public:
ApplicationException(const std::string& message, int errorCode = 0)
: message_(message), errorCode_(errorCode) {}
const char* what() const noexcept override {
return message_.c_str();
}
int getErrorCode() const { return errorCode_; }
};
class DatabaseException : public ApplicationException {
private:
std::string query_;
public:
DatabaseException(const std::string& message,
const std::string& query,
int errorCode = 0)
: ApplicationException(message, errorCode), query_(query) {}
const std::string& getQuery() const { return query_; }
};
class SecurityException : public ApplicationException {
private:
std::string userId_;
std::string operation_;
public:
SecurityException(const std::string& message,
const std::string& userId,
const std::string& operation)
: ApplicationException(message), userId_(userId), operation_(operation) {}
const std::string& getUserId() const { return userId_; }
const std::string& getOperation() const { return operation_; }
};